package com.pro.controller;
//部门信息 控制层
import com.pro.common.GuavaCommon;
import com.pro.pojo.JsonData;
import com.pro.pojo.JsDept;
import com.pro.service.JsDeptService;
import com.pro.utils.GuavaUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@RequestMapping(value = "/SyDept")
@Controller
public class JsDeptController {
    @Autowired
    private JsDeptService jsDeptService;
    @Autowired
    private GuavaUtils guavaUtils;
    //获取登陆人所在部门
    @RequestMapping(value = "/getSyJsDept")
    @ResponseBody
    public JsonData getSyJsDept(Integer account){
        List<JsDept> syJsDeptByCurrentUser = jsDeptService.getSyJsDeptByCurrentUser(account);
        return syJsDeptByCurrentUser != null ? JsonData.buildSuccess(syJsDeptByCurrentUser) : JsonData.buildError("服务器出错了");
    }

    //根据部门名称、管理员名称、创建日期 模糊查询、状态 精准查询 部门信息
    @RequestMapping(value = "/getAllDeptsByNameDateStatus")
    @ResponseBody
    public JsonData getAllDeptsByNameDateStatus(JsDept jsDept){
        System.out.println(jsDept);
        List<JsDept> allDeptsByNameDateStatus = jsDeptService.getAllDeptsByNameDateStatus(jsDept);
        return allDeptsByNameDateStatus != null ? JsonData.buildSuccess(allDeptsByNameDateStatus) : JsonData.buildError("服务器出错了");
    }
    //根据id更改部门状态
    @RequestMapping(value = "/updateDeptStatus")
    @ResponseBody
    public JsonData updateDeptStatus(JsDept jsDept){
        boolean updateDeptStatus = jsDeptService.updateDeptStatus(jsDept);
        return updateDeptStatus ? JsonData.buildSuccess("修改成功") : JsonData.buildError("修改失败");
    }

    //根据id删除当前部门
    @RequestMapping(value = "/delCurrentDeptTable")
    @ResponseBody
    public JsonData delCurrentDeptTable(Integer id){
        boolean delCurrentDeptTable = jsDeptService.delCurrentDeptTable(id);
        return delCurrentDeptTable ? JsonData.buildSuccess("删除成功") : JsonData.buildError("删除失败");
    }

    //根据id更改部门信息
    @RequestMapping(value = "/updateDeptMessage")
    @ResponseBody
    public JsonData updateDeptMessage(JsDept jsDept){
        boolean updateDeptMessage = jsDeptService.updateDeptMessage(jsDept);
        return updateDeptMessage ? JsonData.buildSuccess("修改成功") : JsonData.buildError("修改失败");
    }

    //添加部门
    @RequestMapping(value = "/addDept")
    @ResponseBody
    public JsonData addDept(JsDept jsDept){
        boolean addDept = jsDeptService.addDept(jsDept);
        return addDept ? JsonData.buildSuccess(jsDept) : JsonData.buildError("服务器出错了");
    }
    //获取所有部门
    @RequestMapping(value = "/getDepts")
    @ResponseBody
    public JsonData getDepts(){
        Object ifPresent = guavaUtils.getTenCacheBuild().getIfPresent(String.valueOf(GuavaCommon.DeptTree));
        if(ifPresent!=null){
            return ifPresent!=null? JsonData.buildSuccess(ifPresent): JsonData.buildError("服务器出错了");
        }
        List<JsDept> depts = setDeptTree();
        return depts != null ? JsonData.buildSuccess(depts) : JsonData.buildError("服务器出错了");
    }
    private List<JsDept> setDeptTree(){
        List<JsDept> depts = jsDeptService.getDepts();
        JsDept jsDept = new JsDept();
        jsDept.setId(0);
        jsDept.setParentId(-1);
        jsDept.setDeptName("所有部门");
        depts.add(jsDept);
        return depts;
    }
    //修改部门名称
    @RequestMapping(value = "/updateDeptNameById")
    @ResponseBody
    public JsonData updateDeptNameById(JsDept jsDept){
        boolean updateDeptNameById = jsDeptService.updateDeptNameById(jsDept);
        return updateDeptNameById ? JsonData.buildSuccess("修改成功") : JsonData.buildError("服务器出错了");
    }


    //删除部门
    @RequestMapping(value = "/deleteDeptById")
    @ResponseBody
    public JsonData deleteDeptById(Integer id){
        boolean deleteDeptById = jsDeptService.deleteDeptById(id);
        return deleteDeptById ? JsonData.buildSuccess("删除成功") : JsonData.buildError("服务器出错了");
    }
}
